﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using System.Globalization;

namespace Speedy
{
    public class syncWorkGrup : ISynchronizer
    {
        private string StokBarkod(string stokKod)
        {
            string barkod = "";
            using (SqlConnection cn = new SqlConnection(Config.GetConfig.GetValue(CParams.ConStr)))
            {
                cn.Open();
                using (SqlCommand cmd = new SqlCommand(string.Format("exec sp_executesql N'SELECT  TOP 1   isnull(PW_001_BARKOD.barkod,0) FROM         PW_001_STOK INNER JOIN PW_001_BARKOD ON PW_001_STOK.stok_id = PW_001_BARKOD.stok_id  WHERE     (PW_001_STOK.stok_code = N''{0}'')'", stokKod), cn) { CommandType = CommandType.Text })
                {
                    barkod = cmd.ExecuteScalar().ToString();
                }
                cn.Close();
            }
            return barkod;
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="tip"></param>
        /// <param name="cins"></param>
        /// <param name="normal_iade"></param>
        /// <param name="evrak_tip"></param>
        /// <param name="evrak_tarih"></param>
        /// <param name="seri"></param>
        /// <param name="sira"></param>
        /// <param name="satir"></param>
        /// <param name="stok_kod"></param>
        /// <param name="cari_kod"></param>
        /// <param name="miktar"></param>
        /// <param name="giris_depo"></param>
        /// <param name="cikis_depo"></param>
        /// <param name="odeme"></param>
        /// <param name="plasiyer"></param>
        /// <param name="srmerkez"></param>
        /// <param name="kullanici"></param>
        /// <param name="yekun"></param>
        /// <param name="isk1tutar"></param>
        /// <param name="isk2tutar"></param>
        /// <param name="isk3tutar"></param>
        /// <param name="isk4tutar"></param>
        /// <param name="isk5tutar"></param>
        /// <param name="kdv"></param>
        /// <param name="ref_rec"></param>
        /// <param name="ref_dbc"></param>
        /// <param name="fiyat"></param>
        /// <param name="belge_no"></param>
        /// <param name="firma_no"></param>
        /// <param name="sube_no"></param>
        /// <returns></returns>
        public string SharEkle(int tip, int cins, int normal_iade, int evrak_tip, DateTime evrak_tarih, string seri, int sira, int satir, string stok_kod, string cari_kod, decimal miktar, string giris_depo, string cikis_depo, int odeme, string plasiyer, string srmerkez, string kullanici, decimal yekun, decimal isk1tutar, decimal isk2tutar, decimal isk3tutar, decimal isk4tutar, decimal isk5tutar, int kdv, string ref_rec, string ref_dbc, decimal fiyat, string belge_no, string firma_no, string sube_no, int adresNo, int tevkifatTipi)
        {
            string sonuc = string.Empty;
            if (string.IsNullOrEmpty(kullanici))
                kullanici = "0";
            try
            {
                decimal burutTutar = yekun; //+ isk1tutar + isk2tutar + isk3tutar + isk4tutar + isk5tutar;
                decimal isk1, isk2, isk3, isk4, isk5;
                isk1 = isk1tutar * 100 / burutTutar;
                isk2 = isk2tutar * 100 / (burutTutar - isk1tutar);
                isk3 = isk3tutar * 100 / (burutTutar - isk1tutar - isk2tutar);
                isk4 = isk4tutar * 100 / (burutTutar - isk1tutar - isk2tutar - isk3tutar);
                isk5 = isk5tutar * 100 / (burutTutar - isk1tutar - isk2tutar - isk3tutar - isk4tutar);

                using (SqlConnection cn = new SqlConnection(Config.GetConfig.GetValue(CParams.ConStr)))
                {
                    cn.Open();
                    using (SqlCommand cmd = new SqlCommand("PW_001_001_SHAR_INS", cn) { CommandType = CommandType.StoredProcedure })
                    {
                        cmd.Parameters.Add("@P1", SqlDbType.Int).Value = tip;                                // HAREKET TİPİ */
                        cmd.Parameters.Add("@P2", SqlDbType.Int).Value = cins;                               // HAREKET CİNS */
                        cmd.Parameters.Add("@P3", SqlDbType.Int).Value = evrak_tip;                          // HAREKET DURUM */  
                        cmd.Parameters.Add("@P4", SqlDbType.DateTime).Value = DateTime.Now;                  /* OLUŞTURULMA TARİHİ */
                        cmd.Parameters.Add("@P5", SqlDbType.Int).Value = int.Parse(kullanici);               /* OLUŞTURAN KULLANICI */
                        cmd.Parameters.Add("@P6", SqlDbType.DateTime).Value = DateTime.Now;                  /* GÜNCELLEŞTİRME  TARİHİ */
                        cmd.Parameters.Add("@P7", SqlDbType.Int).Value = int.Parse(kullanici);               /* GÜNCELLEŞTİREN  KULLANICI */
                        cmd.Parameters.Add("@P8", SqlDbType.NVarChar, 5).Value = seri;                       /* HAREKET SERİ */
                        cmd.Parameters.Add("@P9", SqlDbType.Int).Value = sira;                               /* HAREKET SIRA */
                        cmd.Parameters.Add("@P10", SqlDbType.Int).Value = satir;                             /* SATIR NO */
                        cmd.Parameters.Add("@P11", SqlDbType.NVarChar, 10).Value = belge_no;                 /* BELGE NO */
                        cmd.Parameters.Add("@P12", SqlDbType.DateTime).Value = evrak_tarih;                 /* BELGE  TARİHİ */
                        cmd.Parameters.Add("@P13", SqlDbType.DateTime).Value = evrak_tarih;                 /* SEVK  TARİHİ */
                        cmd.Parameters.Add("@P14", SqlDbType.NVarChar, 20).Value = cikis_depo;               /* DEPO KODU */
                        cmd.Parameters.Add("@P15", SqlDbType.NVarChar, 25).Value = cari_kod;                 /* CARİ KODU */
                        cmd.Parameters.Add("@P16", SqlDbType.NVarChar, 25).Value = plasiyer;                 /* SATICI KODU */
                        cmd.Parameters.Add("@P17", SqlDbType.NVarChar, 25).Value = stok_kod;                 /* STOK KODU */
                        cmd.Parameters.Add("@P18", SqlDbType.NVarChar, 25).Value = StokBarkod(stok_kod);            /* BARKOD */
                        cmd.Parameters.Add("@P19", SqlDbType.NVarChar, 25).Value = "";                     /* SERİ NO */
                        cmd.Parameters.Add("@P20", SqlDbType.NVarChar, 25).Value = "1";             /* BIRIM KODU */
                        cmd.Parameters.Add("@P21", SqlDbType.Float).Value = miktar;                          /* MIKTAR */
                        cmd.Parameters.Add("@P22", SqlDbType.Float).Value = fiyat;                           /* FİYAT */
                        cmd.Parameters.Add("@P23", SqlDbType.Int).Value = 0;                                 /* OTV */
                        cmd.Parameters.Add("@P24", SqlDbType.Float).Value = isk1;                       /* İSK-1 */
                        cmd.Parameters.Add("@P25", SqlDbType.Float).Value = isk2;                       /* İSK-2 */
                        cmd.Parameters.Add("@P26", SqlDbType.Float).Value = isk3;                       /* İSK-3 */
                        cmd.Parameters.Add("@P27", SqlDbType.Float).Value = isk4;                       /* İSK-4 */
                        cmd.Parameters.Add("@P28", SqlDbType.Float).Value = isk5;                       /* İSK-5 */
                        cmd.Parameters.Add("@P29", SqlDbType.Float).Value = 0;                   /* İSK-6 */
                        cmd.Parameters.Add("@P30", SqlDbType.Float).Value = 0;                   /* İSK-7 */
                        cmd.Parameters.Add("@P31", SqlDbType.Float).Value = 0;                   /* İSK-8 */
                        cmd.Parameters.Add("@P32", SqlDbType.Float).Value = 0;                   /* İSK-9 */
                        cmd.Parameters.Add("@P33", SqlDbType.Float).Value = 0;                   /* İSK-10 */
                        cmd.Parameters.Add("@P34", SqlDbType.Float).Value = yekun;                   /* MEBLAĞ */
                        cmd.Parameters.Add("@P35", SqlDbType.Int).Value = kdv;                               /* VERGİ */
                        cmd.Parameters.Add("@P36", SqlDbType.NVarChar, 5).Value = GetCurSymbol();              /* DÖVİZ ID */
                        cmd.Parameters.Add("@P37", SqlDbType.Float).Value = 1;                   /* DÖVİZ KURU */
                        cmd.Parameters.Add("@P38", SqlDbType.Float).Value = yekun;                   /* DÖVİZ TOPLAM */
                        cmd.Parameters.Add("@P39", SqlDbType.Int).Value = 0;                     /* VADE */
                        cmd.Parameters.Add("@P40", SqlDbType.NVarChar, 5).Value = string.Empty;                      /* SİPARİŞ SERİ */
                        cmd.Parameters.Add("@P41", SqlDbType.Int).Value = 0;                              /* SİPARİŞ SİRA */
                        cmd.Parameters.Add("@P42", SqlDbType.NVarChar, 5).Value = string.Empty;                      /* İRSALİYE SERİ */
                        cmd.Parameters.Add("@P43", SqlDbType.Int).Value = 0;                              /* İRSALİYE SIRA */
                        cmd.Parameters.Add("@P44", SqlDbType.Int).Value = 0;                         /* İŞLEM TİPİ */
                        cmd.Parameters.Add("@P45", SqlDbType.Int).Value = 0;                      /* HAREKET ID */
                        cmd.Parameters.Add("@P46", SqlDbType.NVarChar).Value = string.Empty;                 /* PRIVATE */
                        cmd.Parameters.Add("@P47", SqlDbType.NVarChar).Value = string.Empty;                 /* PRIVATE */
                        cmd.Parameters.Add("@plot_parti_kod", SqlDbType.NVarChar, 25).Value = string.Empty;
                        cmd.Parameters.Add("@plot_lot_kod", SqlDbType.NVarChar, 25).Value = string.Empty;
                        cmd.Parameters.Add("plot_stok_id ", SqlDbType.Int).Value = byte.MinValue;
                        cmd.Parameters.Add("@plot_aciklama", SqlDbType.NVarChar, 100).Value = string.Empty;
                        cmd.Parameters.Add("@plot_son_kull_tarihi", SqlDbType.DateTime).Value = DateTime.Now;
                        cmd.Parameters.Add("@plot_dara", SqlDbType.Float).Value = 0;
                        cmd.Parameters.Add("@plot_safi", SqlDbType.Float).Value = 0;
                        cmd.Parameters.Add("@plot_en", SqlDbType.Float).Value = 0;
                        cmd.Parameters.Add("@plot_boy", SqlDbType.Float).Value = 0;
                        cmd.Parameters.Add("@plot_yukseklik", SqlDbType.Float).Value = 0;
                        cmd.Parameters.Add("@plot_ozel1", SqlDbType.NVarChar, 25).Value = string.Empty;
                        cmd.Parameters.Add("@plot_ozel2", SqlDbType.NVarChar, 25).Value = string.Empty;
                        cmd.Parameters.Add("@plot_ozel3", SqlDbType.NVarChar, 25).Value = string.Empty;
                        cmd.Parameters.Add("@plot_ozel4", SqlDbType.NVarChar, 25).Value = string.Empty;
                        cmd.Parameters.Add("@plot_ozel5", SqlDbType.NVarChar, 25).Value = string.Empty;
                        cmd.Parameters.Add("@plot_ozel6", SqlDbType.NVarChar, 25).Value = string.Empty;
                        cmd.Parameters.Add("@plot_ozel7", SqlDbType.NVarChar, 25).Value = string.Empty;
                        cmd.Parameters.Add("@plot_ozel8", SqlDbType.NVarChar, 25).Value = string.Empty;
                        cmd.Parameters.Add("@plot_ozel9", SqlDbType.NVarChar, 25).Value = string.Empty;
                        cmd.Parameters.Add("@plot_ozel10", SqlDbType.NVarChar, 25).Value = string.Empty;
                        cmd.Parameters.Add("@otv_tutar", SqlDbType.Float).Value = 0;
                        cmd.Parameters.Add("@oiv_tutar", SqlDbType.Float).Value = 0;
                        cmd.Parameters.Add("@satir_cinsi", SqlDbType.TinyInt).Value = 0;
                        cmd.ExecuteNonQuery();
                    }
                    cn.Close();
                }
            }
            catch (Exception ex)
            {
                sonuc = ex.Message;
            }
            return sonuc;
        }

        public string NormalSipEkle(DateTime evrak_tarih, string seri, int sira, int satir, string stok_kod, string cari_kod, decimal miktar, string giris_depo, string cikis_depo, string plasiyer, string srmerkez, string kullanici, decimal yekun, decimal isk1tutar, decimal isk2tutar, decimal isk3tutar, decimal isk4tutar, decimal isk5tutar, int kdv, decimal fiyat, string belge_no, string firma_no, string sube_no)
        {
            string sonuc = string.Empty;
            try
            {
                decimal burutTutar = yekun + isk1tutar + isk2tutar + isk3tutar + isk4tutar + isk5tutar;
                decimal isk1, isk2, isk3, isk4, isk5;
                isk1 = isk1tutar * 100 / burutTutar;
                isk2 = isk2tutar * 100 / (burutTutar - isk1tutar);
                isk3 = isk3tutar * 100 / (burutTutar - isk1tutar - isk2tutar);
                isk4 = isk4tutar * 100 / (burutTutar - isk1tutar - isk2tutar - isk3tutar);
                isk5 = isk5tutar * 100 / (burutTutar - isk1tutar - isk2tutar - isk3tutar - isk4tutar);
                using (SqlConnection cn = new SqlConnection(Config.GetConfig.GetValue(CParams.ConStr)))
                {
                    cn.Open();
                    using (SqlCommand cmd = new SqlCommand("PW_001_001_SIPARIS_INS", cn) { CommandType = CommandType.StoredProcedure })
                    {
                        /*
                         * cins=0 and tip=0 tip_ad=N'Normal Verilen Sipariş'   
                         * cins=1 and tip=0 tip_ad=N'Proforma Verilen Sipariş' 
                         * cins=2 and tip=0 tip_ad=N'Şube Verilen Sipariş'     
                         * cins=0 and tip=1 tip_ad=N'Normal Alınan Sipariş'    
                         * cins=1 and tip=1 tip_ad=N'Proforma Alınan Sipariş'  
                         * cins=2 and tip=1 tip_ad=N'Şube Alınan Sipariş'     
                         */
                        cmd.Parameters.Add("@P1", SqlDbType.Int).Value = 0;                    /* HAREKET TİPİ */
                        cmd.Parameters.Add("@P2", SqlDbType.Int).Value = 0;                    /* HAREKET CİNS */
                        cmd.Parameters.Add("@P3", SqlDbType.Int).Value = 0;                    /* HAREKET DURUM */
                        cmd.Parameters.Add("@P4", SqlDbType.DateTime).Value = DateTime.Now;                /* OLUŞTURULMA TARİHİ */
                        cmd.Parameters.Add("@P5", SqlDbType.Int).Value = int.Parse(kullanici);             /* OLUŞTURAN KULLANICI */
                        cmd.Parameters.Add("@P6", SqlDbType.DateTime).Value = DateTime.Now;                /* GÜNCELLEŞTİRME  TARİHİ */
                        cmd.Parameters.Add("@P7", SqlDbType.Int).Value = int.Parse(kullanici);             /* GÜNCELLEŞTİREN  KULLANICI */
                        cmd.Parameters.Add("@P8", SqlDbType.NVarChar, 5).Value = seri;                     /* HAREKET SERİ */
                        cmd.Parameters.Add("@P9", SqlDbType.Int).Value = sira;                             /* HAREKET SIRA */
                        cmd.Parameters.Add("@P10", SqlDbType.Int).Value = satir;                           /* SATIR NO */
                        cmd.Parameters.Add("@P11", SqlDbType.NVarChar, 10).Value = belge_no;               /* BELGE NO */
                        cmd.Parameters.Add("@P12", SqlDbType.DateTime).Value = evrak_tarih;                /* BELGE  TARİHİ */
                        cmd.Parameters.Add("@P13", SqlDbType.DateTime).Value = evrak_tarih;                /* SEVK  TARİHİ */
                        cmd.Parameters.Add("@P14", SqlDbType.NVarChar, 20).Value = giris_depo;             /*GİRİŞ DEPO KODU */
                        cmd.Parameters.Add("@P15", SqlDbType.NVarChar, 20).Value = giris_depo;             /*ÇIKIŞ DEPO KODU */
                        cmd.Parameters.Add("@P16", SqlDbType.NVarChar, 25).Value = cari_kod;               /* CARİ KODU */
                        cmd.Parameters.Add("@P17", SqlDbType.NVarChar, 25).Value = plasiyer;               /* SATICI KODU */
                        cmd.Parameters.Add("@P18", SqlDbType.NVarChar, 25).Value = stok_kod;               /* STOK KODU */
                        cmd.Parameters.Add("@P19", SqlDbType.NVarChar, 25).Value = StokBarkod(stok_kod);           /* BARKOD */
                        cmd.Parameters.Add("@P20", SqlDbType.NVarChar, 25).Value = string.Empty;           /* SERİ NO */
                        cmd.Parameters.Add("@P21", SqlDbType.NVarChar, 25).Value = "1";           /* BIRIM KODU */
                        cmd.Parameters.Add("@P22", SqlDbType.Float).Value = miktar;                        /* MIKTAR */
                        cmd.Parameters.Add("@P23", SqlDbType.Float).Value = 0;                             /* TEMİN */
                        cmd.Parameters.Add("@P24", SqlDbType.Bit).Value = false;                           /* KAPALI */
                        cmd.Parameters.Add("@P25", SqlDbType.Bit).Value = false;                           /* ONAY */
                        cmd.Parameters.Add("@P26", SqlDbType.Float).Value = fiyat;                         /*FİYAT */
                        cmd.Parameters.Add("@P27", SqlDbType.Float).Value = isk1;                     /* İSK-1 */
                        cmd.Parameters.Add("@P28", SqlDbType.Float).Value = isk2;                     /* İSK-2 */
                        cmd.Parameters.Add("@P29", SqlDbType.Float).Value = isk3;                     /* İSK-3 */
                        cmd.Parameters.Add("@P30", SqlDbType.Float).Value = isk4;                     /* İSK-4 */
                        cmd.Parameters.Add("@P31", SqlDbType.Float).Value = isk5;                     /* İSK-5 */
                        cmd.Parameters.Add("@P32", SqlDbType.Float).Value = 0;                 /* İSK-6 */
                        cmd.Parameters.Add("@P33", SqlDbType.Float).Value = 0;                 /* İSK-7 */
                        cmd.Parameters.Add("@P34", SqlDbType.Float).Value = 0;                 /* İSK-8 */
                        cmd.Parameters.Add("@P35", SqlDbType.Float).Value = 0;                 /* İSK-9 */
                        cmd.Parameters.Add("@P36", SqlDbType.Float).Value = 0;                 /* İSK-10 */
                        cmd.Parameters.Add("@P37", SqlDbType.Float).Value = yekun;                /* TUTAR */
                        cmd.Parameters.Add("@P38", SqlDbType.SmallInt).Value = kdv;                        /* VERGİ ORAN */
                        cmd.Parameters.Add("@P39", SqlDbType.NVarChar, 5).Value = GetCurSymbol();            /* DÖVİZ KISA AD */
                        cmd.Parameters.Add("@P40", SqlDbType.Float).Value = 1;                 /* DÖVİZ KURU */
                        cmd.Parameters.Add("@P41", SqlDbType.Float).Value = yekun;                 /* DÖVİZ TOPLAM */
                        cmd.Parameters.Add("@P42", SqlDbType.Int).Value = 0;                   /* VADE */
                        cmd.Parameters.Add("@P43", SqlDbType.NVarChar, 5).Value = string.Empty;                    /* İRSALİYE SERİ */
                        cmd.Parameters.Add("@P44", SqlDbType.Int).Value = 0;                            /* İRSALİYE SİRA */
                        cmd.Parameters.Add("@P45", SqlDbType.NVarChar, 5).Value = string.Empty;                    /* FATURA SERİ */
                        cmd.Parameters.Add("@P46", SqlDbType.Int).Value = 0;                            /* FATURA SIRA */
                        cmd.Parameters.Add("@P47", SqlDbType.Int).Value = 0;                   /* HAREKET ID */
                        cmd.Parameters.Add("@P48", SqlDbType.Int).Value = 0;                   /* İŞLEM TİPİ */
                        cmd.ExecuteNonQuery();
                    }
                    cn.Close();
                }
            }
            catch (Exception ex)
            {
                sonuc = ex.Message;
            }
            return sonuc;
        }

        public string AlinanSipEkle(DateTime evrak_tarih, string seri, int sira, int satir, string stok_kod, string cari_kod, decimal miktar, string giris_depo, string cikis_depo, string plasiyer, string srmerkez, string kullanici, decimal yekun, decimal isk1tutar, decimal isk2tutar, decimal isk3tutar, decimal isk4tutar, decimal isk5tutar, int kdv, decimal fiyat, string belge_no, string firma_no, string sube_no, int dovizCinsi, decimal dovizKur)
        {
            string sonuc = string.Empty;
            try
            {
                decimal burutTutar = yekun + isk1tutar + isk2tutar + isk3tutar + isk4tutar + isk5tutar;
                decimal isk1, isk2, isk3, isk4, isk5;
                isk1 = isk1tutar * 100 / burutTutar;
                isk2 = isk2tutar * 100 / (burutTutar - isk1tutar);
                isk3 = isk3tutar * 100 / (burutTutar - isk1tutar - isk2tutar);
                isk4 = isk4tutar * 100 / (burutTutar - isk1tutar - isk2tutar - isk3tutar);
                isk5 = isk5tutar * 100 / (burutTutar - isk1tutar - isk2tutar - isk3tutar - isk4tutar);
                using (SqlConnection cn = new SqlConnection(Config.GetConfig.GetValue(CParams.ConStr)))
                {
                    cn.Open();
                    using (SqlCommand cmd = new SqlCommand("PW_001_001_SIPARIS_INS", cn) { CommandType = CommandType.StoredProcedure })
                    {
                        /*
                         * cins=0 and tip=0 tip_ad=N'Normal Verilen Sipariş'   
                         * cins=1 and tip=0 tip_ad=N'Proforma Verilen Sipariş' 
                         * cins=2 and tip=0 tip_ad=N'Şube Verilen Sipariş'     
                         * cins=0 and tip=1 tip_ad=N'Normal Alınan Sipariş'    
                         * cins=1 and tip=1 tip_ad=N'Proforma Alınan Sipariş'  
                         * cins=2 and tip=1 tip_ad=N'Şube Alınan Sipariş'     
                         */
                        cmd.Parameters.Add("@P1", SqlDbType.Int).Value = 1;                                /* HAREKET TİPİ */
                        cmd.Parameters.Add("@P2", SqlDbType.Int).Value = 0;                    /* HAREKET CİNS */
                        cmd.Parameters.Add("@P3", SqlDbType.Int).Value = 0;                    /* HAREKET DURUM */
                        cmd.Parameters.Add("@P4", SqlDbType.DateTime).Value = DateTime.Now;                /* OLUŞTURULMA TARİHİ */
                        cmd.Parameters.Add("@P5", SqlDbType.Int).Value = int.Parse(kullanici);             /* OLUŞTURAN KULLANICI */
                        cmd.Parameters.Add("@P6", SqlDbType.DateTime).Value = DateTime.Now;                /* GÜNCELLEŞTİRME  TARİHİ */
                        cmd.Parameters.Add("@P7", SqlDbType.Int).Value = int.Parse(kullanici);             /* GÜNCELLEŞTİREN  KULLANICI */
                        cmd.Parameters.Add("@P8", SqlDbType.NVarChar, 5).Value = seri;                     /* HAREKET SERİ */
                        cmd.Parameters.Add("@P9", SqlDbType.Int).Value = sira;                             /* HAREKET SIRA */
                        cmd.Parameters.Add("@P10", SqlDbType.Int).Value = satir;                           /* SATIR NO */
                        cmd.Parameters.Add("@P11", SqlDbType.NVarChar, 10).Value = belge_no;               /* BELGE NO */
                        cmd.Parameters.Add("@P12", SqlDbType.DateTime).Value = evrak_tarih;                /* BELGE  TARİHİ */
                        cmd.Parameters.Add("@P13", SqlDbType.DateTime).Value = evrak_tarih;                /* SEVK  TARİHİ */
                        cmd.Parameters.Add("@P14", SqlDbType.NVarChar, 20).Value = cikis_depo;             /*GİRİŞ DEPO KODU */
                        cmd.Parameters.Add("@P15", SqlDbType.NVarChar, 20).Value = cikis_depo;             /*ÇIKIŞ DEPO KODU */
                        cmd.Parameters.Add("@P16", SqlDbType.NVarChar, 25).Value = cari_kod;               /* CARİ KODU */
                        cmd.Parameters.Add("@P17", SqlDbType.NVarChar, 25).Value = plasiyer;               /* SATICI KODU */
                        cmd.Parameters.Add("@P18", SqlDbType.NVarChar, 25).Value = stok_kod;               /* STOK KODU */
                        cmd.Parameters.Add("@P19", SqlDbType.NVarChar, 25).Value = StokBarkod(stok_kod);           /* BARKOD */
                        cmd.Parameters.Add("@P20", SqlDbType.NVarChar, 25).Value = string.Empty;                   /* SERİ NO */
                        cmd.Parameters.Add("@P21", SqlDbType.NVarChar, 25).Value = "1";           /* BIRIM KODU */
                        cmd.Parameters.Add("@P22", SqlDbType.Float).Value = miktar;                        /* MIKTAR */
                        cmd.Parameters.Add("@P23", SqlDbType.Float).Value = 0;                 /* TEMİN */
                        cmd.Parameters.Add("@P24", SqlDbType.Bit).Value = false;                           /* KAPALI */
                        cmd.Parameters.Add("@P25", SqlDbType.Bit).Value = false;                           /* ONAY */
                        cmd.Parameters.Add("@P26", SqlDbType.Float).Value = fiyat;                         /*FİYAT */
                        cmd.Parameters.Add("@P27", SqlDbType.Float).Value = isk1;                     /* İSK-1 */
                        cmd.Parameters.Add("@P28", SqlDbType.Float).Value = isk2;                     /* İSK-2 */
                        cmd.Parameters.Add("@P29", SqlDbType.Float).Value = isk3;                     /* İSK-3 */
                        cmd.Parameters.Add("@P30", SqlDbType.Float).Value = isk4;                     /* İSK-4 */
                        cmd.Parameters.Add("@P31", SqlDbType.Float).Value = isk5;                     /* İSK-5 */
                        cmd.Parameters.Add("@P32", SqlDbType.Float).Value = 0;                 /* İSK-6 */
                        cmd.Parameters.Add("@P33", SqlDbType.Float).Value = 0;                 /* İSK-7 */
                        cmd.Parameters.Add("@P34", SqlDbType.Float).Value = 0;                 /* İSK-8 */
                        cmd.Parameters.Add("@P35", SqlDbType.Float).Value = 0;                 /* İSK-9 */
                        cmd.Parameters.Add("@P36", SqlDbType.Float).Value = 0;                 /* İSK-10 */
                        cmd.Parameters.Add("@P37", SqlDbType.Float).Value = yekun;                /* TUTAR */
                        cmd.Parameters.Add("@P38", SqlDbType.SmallInt).Value = kdv;                        /* VERGİ ORAN */
                        cmd.Parameters.Add("@P39", SqlDbType.NVarChar, 5).Value = GetCurSymbol();            /* DÖVİZ KISA AD */
                        cmd.Parameters.Add("@P40", SqlDbType.Float).Value = 1;                 /* DÖVİZ KURU */
                        cmd.Parameters.Add("@P41", SqlDbType.Float).Value = yekun;                 /* DÖVİZ TOPLAM */
                        cmd.Parameters.Add("@P42", SqlDbType.Int).Value = 0;                   /* VADE */
                        cmd.Parameters.Add("@P43", SqlDbType.NVarChar, 5).Value = string.Empty;                    /* İRSALİYE SERİ */
                        cmd.Parameters.Add("@P44", SqlDbType.Int).Value = 0;                            /* İRSALİYE SİRA */
                        cmd.Parameters.Add("@P45", SqlDbType.NVarChar, 5).Value = string.Empty;                    /* FATURA SERİ */
                        cmd.Parameters.Add("@P46", SqlDbType.Int).Value = 0;                            /* FATURA SIRA */
                        cmd.Parameters.Add("@P47", SqlDbType.Int).Value = 0;                   /* HAREKET ID */
                        cmd.Parameters.Add("@P48", SqlDbType.Int).Value = 0;                   /* İŞLEM TİPİ */
                        cmd.ExecuteNonQuery();
                    }
                    cn.Close();
                }
            }
            catch (Exception ex)
            {
                sonuc = ex.Message;
            }
            return sonuc;
        }

        public string ProformaSipEkle(int tip, int cins, int normal_iade, int evrak_tip, DateTime evrak_tarih, string seri, int sira, int satir, string stok_kod, string cari_kod, decimal miktar, string giris_depo, string cikis_depo, string plasiyer, string srmerkez, string kullanici, decimal yekun, decimal isk1tutar, decimal isk2tutar, decimal isk3tutar, decimal isk4tutar, decimal isk5tutar, int kdv, decimal fiyat, string belge_no, string firma_no, string sube_no)
        {
            string sonuc = string.Empty;
            try
            {
                decimal burutTutar = yekun + isk1tutar + isk2tutar + isk3tutar + isk4tutar + isk5tutar;
                decimal isk1, isk2, isk3, isk4, isk5;
                isk1 = isk1tutar * 100 / burutTutar;
                isk2 = isk2tutar * 100 / (burutTutar - isk1tutar);
                isk3 = isk3tutar * 100 / (burutTutar - isk1tutar - isk2tutar);
                isk4 = isk4tutar * 100 / (burutTutar - isk1tutar - isk2tutar - isk3tutar);
                isk5 = isk5tutar * 100 / (burutTutar - isk1tutar - isk2tutar - isk3tutar - isk4tutar);
                using (SqlConnection cn = new SqlConnection(Config.GetConfig.GetValue(CParams.ConStr)))
                {
                    cn.Open();
                    using (SqlCommand cmd = new SqlCommand("PW_001_001_SIPARIS_INS", cn) { CommandType = CommandType.StoredProcedure })
                    {
                        /*
                         * cins=0 and tip=0 tip_ad=N'Normal Verilen Sipariş'   
                         * cins=1 and tip=0 tip_ad=N'Proforma Verilen Sipariş' 
                         * cins=2 and tip=0 tip_ad=N'Şube Verilen Sipariş'     
                         * cins=0 and tip=1 tip_ad=N'Normal Alınan Sipariş'    
                         * cins=1 and tip=1 tip_ad=N'Proforma Alınan Sipariş'  
                         * cins=2 and tip=1 tip_ad=N'Şube Alınan Sipariş'     
                         */
                        cmd.Parameters.Add("@P1", SqlDbType.Int).Value = tip;                              /* HAREKET TİPİ */
                        cmd.Parameters.Add("@P2", SqlDbType.Int).Value = cins;                             /* HAREKET CİNS */
                        cmd.Parameters.Add("@P3", SqlDbType.Int).Value = evrak_tip;                        /* HAREKET DURUM */
                        cmd.Parameters.Add("@P4", SqlDbType.DateTime).Value = DateTime.Now;                /* OLUŞTURULMA TARİHİ */
                        cmd.Parameters.Add("@P5", SqlDbType.Int).Value = int.Parse(kullanici);             /* OLUŞTURAN KULLANICI */
                        cmd.Parameters.Add("@P6", SqlDbType.DateTime).Value = DateTime.Now;                /* GÜNCELLEŞTİRME  TARİHİ */
                        cmd.Parameters.Add("@P7", SqlDbType.Int).Value = int.Parse(kullanici);             /* GÜNCELLEŞTİREN  KULLANICI */
                        cmd.Parameters.Add("@P8", SqlDbType.NVarChar, 5).Value = seri;                     /* HAREKET SERİ */
                        cmd.Parameters.Add("@P9", SqlDbType.Int).Value = sira;                             /* HAREKET SIRA */
                        cmd.Parameters.Add("@P10", SqlDbType.Int).Value = satir;                           /* SATIR NO */
                        cmd.Parameters.Add("@P11", SqlDbType.NVarChar, 10).Value = belge_no;               /* BELGE NO */
                        cmd.Parameters.Add("@P12", SqlDbType.DateTime).Value = evrak_tarih;                /* BELGE  TARİHİ */
                        cmd.Parameters.Add("@P13", SqlDbType.DateTime).Value = evrak_tarih;                /* SEVK  TARİHİ */
                        cmd.Parameters.Add("@P14", SqlDbType.NVarChar, 20).Value = cikis_depo;             /*GİRİŞ DEPO KODU */
                        cmd.Parameters.Add("@P15", SqlDbType.NVarChar, 20).Value = cikis_depo;             /*ÇIKIŞ DEPO KODU */
                        cmd.Parameters.Add("@P16", SqlDbType.NVarChar, 25).Value = cari_kod;               /* CARİ KODU */
                        cmd.Parameters.Add("@P17", SqlDbType.NVarChar, 25).Value = plasiyer;               /* SATICI KODU */
                        cmd.Parameters.Add("@P18", SqlDbType.NVarChar, 25).Value = stok_kod;               /* STOK KODU */
                        cmd.Parameters.Add("@P19", SqlDbType.NVarChar, 25).Value = StokBarkod(stok_kod);           /* BARKOD */
                        cmd.Parameters.Add("@P20", SqlDbType.NVarChar, 25).Value = "";                   /* SERİ NO */
                        cmd.Parameters.Add("@P21", SqlDbType.NVarChar, 25).Value = "1";           /* BIRIM KODU */
                        cmd.Parameters.Add("@P22", SqlDbType.Float).Value = miktar;                        /* MIKTAR */
                        cmd.Parameters.Add("@P23", SqlDbType.Float).Value = byte.MinValue;                 /* TEMİN */
                        cmd.Parameters.Add("@P24", SqlDbType.Bit).Value = false;                           /* KAPALI */
                        cmd.Parameters.Add("@P25", SqlDbType.Bit).Value = false;                           /* ONAY */
                        cmd.Parameters.Add("@P26", SqlDbType.Float).Value = fiyat;                         /*FİYAT */
                        cmd.Parameters.Add("@P27", SqlDbType.Float).Value = isk1;                     /* İSK-1 */
                        cmd.Parameters.Add("@P28", SqlDbType.Float).Value = isk2;                     /* İSK-2 */
                        cmd.Parameters.Add("@P29", SqlDbType.Float).Value = isk3;                     /* İSK-3 */
                        cmd.Parameters.Add("@P30", SqlDbType.Float).Value = isk4;                     /* İSK-4 */
                        cmd.Parameters.Add("@P31", SqlDbType.Float).Value = isk5;                     /* İSK-5 */
                        cmd.Parameters.Add("@P32", SqlDbType.Float).Value = 0;                 /* İSK-6 */
                        cmd.Parameters.Add("@P33", SqlDbType.Float).Value = 0;                 /* İSK-7 */
                        cmd.Parameters.Add("@P34", SqlDbType.Float).Value = 0;                 /* İSK-8 */
                        cmd.Parameters.Add("@P35", SqlDbType.Float).Value = 0;                 /* İSK-9 */
                        cmd.Parameters.Add("@P36", SqlDbType.Float).Value = 0;                 /* İSK-10 */
                        cmd.Parameters.Add("@P37", SqlDbType.Float).Value = yekun;                /* TUTAR */
                        cmd.Parameters.Add("@P38", SqlDbType.SmallInt).Value = kdv;                        /* VERGİ ORAN */
                        cmd.Parameters.Add("@P39", SqlDbType.NVarChar, 5).Value = GetCurSymbol();            /* DÖVİZ KISA AD */
                        cmd.Parameters.Add("@P40", SqlDbType.Float).Value = 1;                 /* DÖVİZ KURU */
                        cmd.Parameters.Add("@P41", SqlDbType.Float).Value = yekun;                 /* DÖVİZ TOPLAM */
                        cmd.Parameters.Add("@P42", SqlDbType.Int).Value = 0;                   /* VADE */
                        cmd.Parameters.Add("@P43", SqlDbType.NVarChar, 5).Value = string.Empty;                    /* İRSALİYE SERİ */
                        cmd.Parameters.Add("@P44", SqlDbType.Int).Value = 0;                            /* İRSALİYE SİRA */
                        cmd.Parameters.Add("@P45", SqlDbType.NVarChar, 5).Value = string.Empty;                    /* FATURA SERİ */
                        cmd.Parameters.Add("@P46", SqlDbType.Int).Value = 0;                            /* FATURA SIRA */
                        cmd.Parameters.Add("@P47", SqlDbType.Int).Value = 0;                   /* HAREKET ID */
                        cmd.Parameters.Add("@P48", SqlDbType.Int).Value = 0;                   /* İŞLEM TİPİ */
                        cmd.ExecuteNonQuery();
                    }
                    cn.Close();
                }
            }
            catch (Exception ex)
            {
                sonuc = ex.Message;
            }
            return sonuc;
        }

        public string SubeSipEkle(int tip, int cins, int normal_iade, int evrak_tip, DateTime evrak_tarih, string seri, int sira, int satir, string stok_kod, string cari_kod, decimal miktar, string giris_depo, string cikis_depo, string plasiyer, string srmerkez, string kullanici, decimal yekun, decimal isk1tutar, decimal isk2tutar, decimal isk3tutar, decimal isk4tutar, decimal isk5tutar, int kdv, decimal fiyat, string belge_no, string firma_no, string sube_no)
        {
            string sonuc = string.Empty;
            try
            {
                decimal burutTutar = yekun + isk1tutar + isk2tutar + isk3tutar + isk4tutar + isk5tutar;
                decimal isk1, isk2, isk3, isk4, isk5;
                isk1 = isk1tutar * 100 / burutTutar;
                isk2 = isk2tutar * 100 / (burutTutar - isk1tutar);
                isk3 = isk3tutar * 100 / (burutTutar - isk1tutar - isk2tutar);
                isk4 = isk4tutar * 100 / (burutTutar - isk1tutar - isk2tutar - isk3tutar);
                isk5 = isk5tutar * 100 / (burutTutar - isk1tutar - isk2tutar - isk3tutar - isk4tutar);
                using (SqlConnection cn = new SqlConnection(Config.GetConfig.GetValue(CParams.ConStr)))
                {
                    cn.Open();
                    using (SqlCommand cmd = new SqlCommand("PW_001_001_SIPARIS_INS", cn) { CommandType = CommandType.StoredProcedure })
                    {
                        /*
                         * cins=0 and tip=0 tip_ad=N'Normal Verilen Sipariş'   
                         * cins=1 and tip=0 tip_ad=N'Proforma Verilen Sipariş' 
                         * cins=2 and tip=0 tip_ad=N'Şube Verilen Sipariş'     
                         * cins=0 and tip=1 tip_ad=N'Normal Alınan Sipariş'    
                         * cins=1 and tip=1 tip_ad=N'Proforma Alınan Sipariş'  
                         * cins=2 and tip=1 tip_ad=N'Şube Alınan Sipariş'     
                         */
                        cmd.Parameters.Add("@P1", SqlDbType.Int).Value = tip;                              /* HAREKET TİPİ */
                        cmd.Parameters.Add("@P2", SqlDbType.Int).Value = cins;                             /* HAREKET CİNS */
                        cmd.Parameters.Add("@P3", SqlDbType.Int).Value = evrak_tip;                        /* HAREKET DURUM */
                        cmd.Parameters.Add("@P4", SqlDbType.DateTime).Value = DateTime.Now;                /* OLUŞTURULMA TARİHİ */
                        cmd.Parameters.Add("@P5", SqlDbType.Int).Value = int.Parse(kullanici);             /* OLUŞTURAN KULLANICI */
                        cmd.Parameters.Add("@P6", SqlDbType.DateTime).Value = DateTime.Now;                /* GÜNCELLEŞTİRME  TARİHİ */
                        cmd.Parameters.Add("@P7", SqlDbType.Int).Value = int.Parse(kullanici);             /* GÜNCELLEŞTİREN  KULLANICI */
                        cmd.Parameters.Add("@P8", SqlDbType.NVarChar, 5).Value = seri;                     /* HAREKET SERİ */
                        cmd.Parameters.Add("@P9", SqlDbType.Int).Value = sira;                             /* HAREKET SIRA */
                        cmd.Parameters.Add("@P10", SqlDbType.Int).Value = satir;                           /* SATIR NO */
                        cmd.Parameters.Add("@P11", SqlDbType.NVarChar, 10).Value = belge_no;               /* BELGE NO */
                        cmd.Parameters.Add("@P12", SqlDbType.DateTime).Value = evrak_tarih;               /* BELGE  TARİHİ */
                        cmd.Parameters.Add("@P13", SqlDbType.DateTime).Value = evrak_tarih;               /* SEVK  TARİHİ */
                        cmd.Parameters.Add("@P14", SqlDbType.NVarChar, 20).Value = giris_depo;             /*GİRİŞ DEPO KODU */
                        cmd.Parameters.Add("@P15", SqlDbType.NVarChar, 20).Value = cikis_depo;             /*ÇIKIŞ DEPO KODU */
                        cmd.Parameters.Add("@P16", SqlDbType.NVarChar, 25).Value = cari_kod;               /* CARİ KODU */
                        cmd.Parameters.Add("@P17", SqlDbType.NVarChar, 25).Value = plasiyer;               /* SATICI KODU */
                        cmd.Parameters.Add("@P18", SqlDbType.NVarChar, 25).Value = stok_kod;               /* STOK KODU */
                        cmd.Parameters.Add("@P19", SqlDbType.NVarChar, 25).Value = StokBarkod(stok_kod);           /* BARKOD */
                        cmd.Parameters.Add("@P20", SqlDbType.NVarChar, 25).Value = "";                   /* SERİ NO */
                        cmd.Parameters.Add("@P21", SqlDbType.NVarChar, 25).Value = "1";           /* BIRIM KODU */
                        cmd.Parameters.Add("@P22", SqlDbType.Float).Value = miktar;                        /* MIKTAR */
                        cmd.Parameters.Add("@P23", SqlDbType.Float).Value = byte.MinValue;                 /* TEMİN */
                        cmd.Parameters.Add("@P24", SqlDbType.Bit).Value = false;                           /* KAPALI */
                        cmd.Parameters.Add("@P25", SqlDbType.Bit).Value = false;                           /* ONAY */
                        cmd.Parameters.Add("@P26", SqlDbType.Float).Value = fiyat;                         /*FİYAT */
                        cmd.Parameters.Add("@P27", SqlDbType.Float).Value = isk1;                     /* İSK-1 */
                        cmd.Parameters.Add("@P28", SqlDbType.Float).Value = isk2;                     /* İSK-2 */
                        cmd.Parameters.Add("@P29", SqlDbType.Float).Value = isk3;                     /* İSK-3 */
                        cmd.Parameters.Add("@P30", SqlDbType.Float).Value = isk4;                     /* İSK-4 */
                        cmd.Parameters.Add("@P31", SqlDbType.Float).Value = isk5;                     /* İSK-5 */
                        cmd.Parameters.Add("@P32", SqlDbType.Float).Value = 0;                 /* İSK-6 */
                        cmd.Parameters.Add("@P33", SqlDbType.Float).Value = 0;                 /* İSK-7 */
                        cmd.Parameters.Add("@P34", SqlDbType.Float).Value = 0;                 /* İSK-8 */
                        cmd.Parameters.Add("@P35", SqlDbType.Float).Value = 0;                 /* İSK-9 */
                        cmd.Parameters.Add("@P36", SqlDbType.Float).Value = 0;                 /* İSK-10 */
                        cmd.Parameters.Add("@P37", SqlDbType.Float).Value = yekun;                /* TUTAR */
                        cmd.Parameters.Add("@P38", SqlDbType.SmallInt).Value = kdv;                        /* VERGİ ORAN */
                        cmd.Parameters.Add("@P39", SqlDbType.NVarChar, 5).Value = GetCurSymbol();            /* DÖVİZ KISA AD */
                        cmd.Parameters.Add("@P40", SqlDbType.Float).Value = 1;                 /* DÖVİZ KURU */
                        cmd.Parameters.Add("@P41", SqlDbType.Float).Value = yekun;                 /* DÖVİZ TOPLAM */
                        cmd.Parameters.Add("@P42", SqlDbType.Int).Value = 0;                   /* VADE */
                        cmd.Parameters.Add("@P43", SqlDbType.NVarChar, 5).Value = string.Empty;                    /* İRSALİYE SERİ */
                        cmd.Parameters.Add("@P44", SqlDbType.Int).Value = 0;                            /* İRSALİYE SİRA */
                        cmd.Parameters.Add("@P45", SqlDbType.NVarChar, 5).Value = string.Empty;                    /* FATURA SERİ */
                        cmd.Parameters.Add("@P46", SqlDbType.Int).Value = 0;                            /* FATURA SIRA */
                        cmd.Parameters.Add("@P47", SqlDbType.Int).Value = 0;                   /* HAREKET ID */
                        cmd.Parameters.Add("@P48", SqlDbType.Int).Value = 0;                   /* İŞLEM TİPİ */
                        cmd.ExecuteNonQuery();
                    }
                    cn.Close();
                }
            }
            catch (Exception ex)
            {
                sonuc = ex.Message;
            }
            return sonuc;
        }

        public string CariHarKaydet(int tip, int cins, bool normal_iade, int evrak_tip, string seri, int sira, DateTime tarih, string belge_no, string carikod, decimal aratoplam, decimal meblag, decimal isk1, decimal isk2, decimal isk3, decimal isk4, decimal isk5, decimal isk6, decimal vergi1, decimal vergi2, decimal vergi3, decimal vergi4, decimal vergi5, decimal vergi6, string firma_no, string sube_no, int vade, string srmKod, string depoKod, string plasiyerKod, string kasaKodu, string aciklama, bool yazdirildi, Dictionary<string, decimal> tevkifatTutari)
        {
            string sonuc = string.Empty;
            try
            {
                using (SqlConnection cn = new SqlConnection(Config.GetConfig.GetValue(CParams.ConStr)))
                {
                    cn.Open();
                    using (SqlCommand cmd = new SqlCommand("PW_001_001_CHAR_INS", cn) { CommandType = CommandType.StoredProcedure })
                    {
                        cmd.Parameters.Add("@ISLEM", SqlDbType.Int).Value = 1;
                        cmd.Parameters.Add("@P1", SqlDbType.Int).Value = tip;                                /* HAREKET TİPİ */
                        cmd.Parameters.Add("@P2", SqlDbType.Int).Value = cins;                               /* HAREKET CİNS */
                        cmd.Parameters.Add("@P3", SqlDbType.Int).Value = evrak_tip;                          /* HAREKET DURUM */
                        cmd.Parameters.Add("@P4", SqlDbType.DateTime).Value = DateTime.Now;                  /* OLUŞTURULMA TARİHİ */
                        cmd.Parameters.Add("@P5", SqlDbType.Int).Value = byte.MinValue;                      /* OLUŞTURAN KULLANICI */
                        cmd.Parameters.Add("@P6", SqlDbType.DateTime).Value = DateTime.Now;                  /* GÜNCELLEŞTİRME  TARİHİ */
                        cmd.Parameters.Add("@P7", SqlDbType.Int).Value = byte.MinValue;                      /* GÜNCELLEŞTİREN  KULLANICI */
                        cmd.Parameters.Add("@P8", SqlDbType.NVarChar, 5).Value = seri;                       /* HAREKET SERİ */
                        cmd.Parameters.Add("@P9", SqlDbType.Int).Value = sira;                               /* HAREKET SIRA */
                        cmd.Parameters.Add("@P10", SqlDbType.Int).Value = 0;                     /* SATIR NO */
                        cmd.Parameters.Add("@P11", SqlDbType.NVarChar, 10).Value = belge_no;                 /* BELGE NO */
                        cmd.Parameters.Add("@P12", SqlDbType.DateTime).Value = tarih;                 /* BELGE  TARİHİ */
                        cmd.Parameters.Add("@P13", SqlDbType.DateTime).Value = tarih;                 /* SEVK  TARİHİ */
                        cmd.Parameters.Add("@P14", SqlDbType.NVarChar, 20).Value = depoKod;             /*GİRİŞ DEPO KODU */
                        cmd.Parameters.Add("@P15", SqlDbType.SmallInt).Value = 0;                 /*char_cari_cins*/
                        cmd.Parameters.Add("@P16", SqlDbType.NVarChar, 25).Value = carikod;                  /* CARİ KODU, KASA KODU, BANKA KODU */
                        cmd.Parameters.Add("@P17", SqlDbType.SmallInt).Value = 0;                /* char_karsi_hes_cins*/
                        cmd.Parameters.Add("@P18", SqlDbType.NVarChar, 25).Value = string.Empty;                  /*KARŞI HESAP  CARİ KODU, KASA KODU, BANKA KODU */
                        cmd.Parameters.Add("@P19", SqlDbType.NVarChar, 25).Value = plasiyerKod;             /*SATICI KODU*/
                        cmd.Parameters.Add("@P20", SqlDbType.NVarChar, 25).Value = kasaKodu;             /* KASA KODU */
                        cmd.Parameters.Add("@P21", SqlDbType.NVarChar, 25).Value = string.Empty;             /* BANKA KODU */
                        cmd.Parameters.Add("@P22", SqlDbType.NVarChar, 25).Value = string.Empty;             /*HİZMET KODU */
                        cmd.Parameters.Add("@P23", SqlDbType.Int).Value = vade;                              /* VADE */
                        cmd.Parameters.Add("@P24", SqlDbType.DateTime).Value = tarih;                        /* VADE TARİHİ*/
                        cmd.Parameters.Add("@P25", SqlDbType.NVarChar, 25).Value = string.Empty;             /* KEŞİDE YERİ */
                        cmd.Parameters.Add("@P26", SqlDbType.SmallInt).Value = byte.MinValue;                /*POZİSYON*/
                        cmd.Parameters.Add("@P27", SqlDbType.NVarChar, 25).Value = string.Empty;             /*REFERANS*/
                        cmd.Parameters.Add("@P28", SqlDbType.NVarChar, 250).Value = aciklama;            /*AÇIKLAMA*/
                        cmd.Parameters.Add("@P29", SqlDbType.Float).Value = byte.MinValue;                   /*STOPAJ*/
                        cmd.Parameters.Add("@P30", SqlDbType.Float).Value = aratoplam;                       /* ARATOPLAM */
                        cmd.Parameters.Add("@P31", SqlDbType.Float).Value = isk1 + isk2 + isk3 + isk4 + isk5 + isk6;                            /* İSKONTO */
                        cmd.Parameters.Add("@P32", SqlDbType.Float).Value = byte.MinValue;                   /* MASRAF */
                        cmd.Parameters.Add("@P33", SqlDbType.Float).Value = vergi1 + vergi2 + vergi3 + vergi4 + vergi5 + vergi6;                          /* VERGİ */
                        cmd.Parameters.Add("@P34", SqlDbType.Float).Value = byte.MinValue;                   /* OTV */
                        cmd.Parameters.Add("@P35", SqlDbType.Float).Value = byte.MinValue;                   /* TEVKİFAT */
                        cmd.Parameters.Add("@P36", SqlDbType.Float).Value = meblag;                          /* MEBLAĞ */
                        cmd.Parameters.Add("@P37", SqlDbType.NVarChar, 5).Value = GetCurSymbol();              /*DOVİZ KISA AD*/
                        cmd.Parameters.Add("@P38", SqlDbType.Int).Value = 0;                     /*RECORD ID*/
                        cmd.Parameters.Add("@P39", SqlDbType.NVarChar, 5).Value = string.Empty;                      /*ref_seri */
                        cmd.Parameters.Add("@P40", SqlDbType.Int).Value = 0;                              /*ref_sira*/
                        cmd.Parameters.Add("@P41", SqlDbType.NVarChar, 25).Value = string.Empty;             /*char_cek_no*/
                        cmd.Parameters.Add("@P42", SqlDbType.Int).Value = 0;                     /*char_cek_id */
                        cmd.Parameters.Add("@P43", SqlDbType.Float).Value = 1;                   /*doviz kur*/
                        cmd.Parameters.Add("@P44", SqlDbType.Float).Value = meblag;                   /*doviz tutar*/
                        cmd.Parameters.Add("@oiv_tutar", SqlDbType.Float).Value = 0;
                        cmd.ExecuteNonQuery();
                    }
                    cn.Close();

                    if (yazdirildi)
                    {
                        EvrakYazdirildiEkle(seri, sira);
                    }
                }
            }
            catch (Exception ex)
            {
                sonuc = ex.Message;
            }
            return sonuc;
        }

        public string GetCurSymbol()
        {
            NumberFormatInfo LocalFormat = (NumberFormatInfo)NumberFormatInfo.CurrentInfo.Clone();
            return LocalFormat.CurrencySymbol;
        }

        //public bool Banka_Islem_Kayit(int ISLEM, string banka_kod, int posid, DateTime belge_tarihi, int islem_tipi, int islem_cinsi, decimal komisyon_tutar, decimal puan_tutar, string portfoy_no, string seri, string sira, int satir, decimal tutar)
        //{
        //    try
        //    {
        //        using (SqlConnection cn = new SqlConnection(Config.GetConfig.GetValue(CParams.ConStr)))
        //        {
        //            cn.Open();
        //            using (SqlCommand cmd = new SqlCommand("PW_001_001_BANKAHAREKET_ISL", cn) { CommandType = CommandType.StoredProcedure })
        //            {
        //                cmd.Parameters.Add("@P1", SqlDbType.NVarChar, 25).Value = banka_kod.ToString();
        //                cmd.Parameters.Add("@P2", SqlDbType.Int).Value = posid;
        //                cmd.Parameters.Add("@P3", SqlDbType.DateTime).Value = DateTime.Now;
        //                cmd.Parameters.Add("@P4", SqlDbType.Int).Value = 0;
        //                cmd.Parameters.Add("@P5", SqlDbType.DateTime).Value = DateTime.Now;
        //                cmd.Parameters.Add("@P6", SqlDbType.Int).Value = 0;
        //                cmd.Parameters.Add("@P7", SqlDbType.DateTime).Value = belge_tarihi;
        //                cmd.Parameters.Add("@P8", SqlDbType.Int).Value = islem_tipi;
        //                cmd.Parameters.Add("@P9", SqlDbType.Int).Value = islem_cinsi;
        //                cmd.Parameters.Add("@P10", SqlDbType.Float).Value = komisyon_tutar;
        //                cmd.Parameters.Add("@P11", SqlDbType.Float).Value = puan_tutar;
        //                cmd.Parameters.Add("@P12", SqlDbType.NVarChar, 25).Value = portfoy_no;
        //                cmd.Parameters.Add("@P13", SqlDbType.NVarChar, 25).Value = seri;
        //                cmd.Parameters.Add("@P14", SqlDbType.NVarChar, 25).Value = sira;
        //                cmd.Parameters.Add("@P15", SqlDbType.Int).Value = satir;
        //                cmd.Parameters.Add("@P16", SqlDbType.Int).Value = ISLEM;
        //                cmd.Parameters.Add("@P17", SqlDbType.Float).Value = tutar;

        //                cn.Open();
        //                cmd.ExecuteNonQuery();
        //                cn.Close();
        //            }
        //        }
        //        return true;
        //    }
        //    catch (Exception)
        //    {
        //        return false;
        //    }
        //}

        //private void Banka_islem_Kaydet(int islem, int sira, string banka_kod, string kart_no)
        //{
        //    int posid = 0;
        //    decimal komisyon = 0;
        //    decimal puan = 0;
        //    decimal tutar = 0;
        //    int islem_cinsi = 0;
        //    bool durum = true;

        //    if (Tahsilat_Kredi_Dataset.Tables.Count > 0)
        //    {
        //        if (Tahsilat_Kredi_Dataset.Tables("HAREKET").Rows.Count > 0)
        //        {
        //            for (int i = 0; i <= Tahsilat_Kredi_Dataset.Tables("HAREKET").Rows.Count - 1; i++)
        //            {
        //                sira = Tahsilat_Kredi_Dataset.Tables("HAREKET").Rows(i)("SIRA");
        //                tarih = Tahsilat_Kredi_Dataset.Tables("HAREKET").Rows(i)("TARIH");
        //                banka_kod = Tahsilat_Kredi_Dataset.Tables("HAREKET").Rows(i)("BANKA_KOD");
        //                posid = Tahsilat_Kredi_Dataset.Tables("HAREKET").Rows(i)("POS_ID");
        //                komisyon = Tahsilat_Kredi_Dataset.Tables("HAREKET").Rows(i)("KOMISYON");
        //                puan = Tahsilat_Kredi_Dataset.Tables("HAREKET").Rows(i)("PUAN");
        //                tutar = Tahsilat_Kredi_Dataset.Tables("HAREKET").Rows(i)("TUTAR");
        //                kart_no = Tahsilat_Kredi_Dataset.Tables("HAREKET").Rows(i)("KART_NO");
        //                islem_cinsi = Tahsilat_Kredi_Dataset.Tables("HAREKET").Rows(i)("CINS");

        //                durum = Banka_Islem_Kayit(0, banka_kod, posid, DateTime.Now, 0, islem_cinsi, komisyon, puan, kart_no, Evr_seri.Text, Evr_sira.Text, i, tutar);


        //            }
        //        }
        //    }
        //}

        public void cek_ekle(string cek_no, string banka_kodu, string banka_ad, string sube_kod, string sube_ad, string frm_unvan, string musteri_no, string vergi_no, string hesap_no, string doviz_ad)
        {
            try
            {
                using (SqlConnection cn = new SqlConnection(Config.GetConfig.GetValue(CParams.ConStr)))
                {
                    cn.Open();
                    using (SqlCommand cmd = new SqlCommand("PW_001_CEK_INS", cn) { CommandType = CommandType.StoredProcedure })
                    {
                        cmd.Parameters.Add("@P1", SqlDbType.NVarChar, 25).Value = cek_no;
                        cmd.Parameters.Add("@P2", SqlDbType.NVarChar, 25).Value = banka_kodu;
                        cmd.Parameters.Add("@P3", SqlDbType.NVarChar, 50).Value = banka_ad;
                        cmd.Parameters.Add("@P4", SqlDbType.NVarChar, 25).Value = sube_kod;
                        cmd.Parameters.Add("@P5", SqlDbType.NVarChar, 50).Value = sube_ad;
                        cmd.Parameters.Add("@P6", SqlDbType.NVarChar, 25).Value = frm_unvan;
                        cmd.Parameters.Add("@P7", SqlDbType.NVarChar, 25).Value = musteri_no;
                        cmd.Parameters.Add("@P8", SqlDbType.NVarChar, 25).Value = vergi_no;
                        cmd.Parameters.Add("@P9", SqlDbType.NVarChar, 25).Value = hesap_no;
                        cmd.Parameters.Add("@P10", SqlDbType.NVarChar, 5).Value = doviz_ad;

                        cmd.ExecuteNonQuery();
                    }
                    cn.Close();
                }
            }
            catch (Exception ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.Message);
            }
        }

        private void EvrakYazdirildiEkle(string evrakSeri, int evrakSira)
        {
            using (SqlConnection cn = new SqlConnection(Config.GetConfig.GetValue(CParams.ConStr)))
            {
                cn.Open();
                using (SqlCommand cmd = new SqlCommand("PW_001_001_EVRAKBILGILERI_ISL", cn) { CommandType = CommandType.StoredProcedure })
                {
                    cmd.Parameters.Add("@evrak_seri", SqlDbType.NVarChar, 5).Value = evrakSeri;
                    cmd.Parameters.Add("@evrak_sira", SqlDbType.Int).Value = evrakSira;
                    cmd.Parameters.Add("@evrak_tip", SqlDbType.Int).Value = 1;
                    cmd.Parameters.Add("@evrak_cins", SqlDbType.Int).Value = 8;
                    cmd.Parameters.Add("@evrak_baski", SqlDbType.TinyInt).Value = true;
                    cmd.Parameters.Add("@evrak_baski_sayisi", SqlDbType.Int).Value = 1;
                    cmd.Parameters.Add("@evrak_ozel_bilgi", SqlDbType.Text).Value = "";
                    cmd.Parameters.Add("@evrak_kilitli", SqlDbType.TinyInt).Value = false;
                    cmd.Parameters.Add("@evrak_belge_no", SqlDbType.NVarChar, 50).Value = "";
                    cmd.Parameters.Add("@islem_tipi", SqlDbType.Int).Value = 0;
                    cmd.ExecuteNonQuery();
                }
                cn.Close();
            }
        }

        public string TahsilatEkle(TahsilatTipi tahsilatTipi, DateTime tarih, string seri, int sira, int satir, string belgeNo, string cariKodu, string kasaHizKod, decimal meblag, string refNo, string srmMerkez, DateTime vade, string bankaAdi, string subeAdi, string hesapNo, string kesideYeri, string kartNo, string cekNo, string depoKod, string plasiyerKod)
        {
            string sonuc = string.Empty;
            try
            {
                int karsiHesapCinsi = 0;
                string kasakodu = "";
                string bankakodu = "";
                int pozisyon = 0;
                int evrak_cins = 27;
                int evrak_durum = 0;

                switch (tahsilatTipi)
                {
                    case TahsilatTipi.Nakit:
                        pozisyon = 0;
                        karsiHesapCinsi = 1;
                        kasakodu = kasaHizKod;
                        bankakodu = "";
                        break;
                    case TahsilatTipi.Cek:
                        evrak_cins = 15;
                        evrak_durum = 1;
                        pozisyon = 1;
                        karsiHesapCinsi = 1;
                        kasakodu = kasaHizKod;
                        bankakodu = "";
                        cek_ekle(cekNo, bankakodu, bankaAdi, "", subeAdi, cariKodu, cariKodu, "", hesapNo, "TL");
                        if (seri.Length == 4)
                            seri = seri.Substring(0, 3) + "C";
                        else
                            seri = seri + "C";

                        satir = 0;
                        break;
                    case TahsilatTipi.Senet:
                        pozisyon = 2;
                        karsiHesapCinsi = 1;
                        kasakodu = kasaHizKod;
                        bankakodu = "";
                        break;
                    case TahsilatTipi.KrediKarti:
                        pozisyon = 3;
                        karsiHesapCinsi = 2;
                        bankakodu = kasaHizKod;
                        kasakodu = "";
                        break;
                    case TahsilatTipi.Havale:
                        pozisyon = 4;
                        karsiHesapCinsi = 2;
                        kasakodu = "";
                        bankakodu = kasaHizKod;
                        break;
                }

                using (SqlConnection cn = new SqlConnection(Config.GetConfig.GetValue(CParams.ConStr)))
                {
                    cn.Open();
                    using (SqlCommand cmd = new SqlCommand("PW_001_001_CHAR_INS", cn) { CommandType = CommandType.StoredProcedure })
                    {
                        cmd.Parameters.Add("@ISLEM", SqlDbType.Int).Value = 0;
                        cmd.Parameters.Add("@P1", SqlDbType.Int).Value = 0;                                /* HAREKET TİPİ */
                        cmd.Parameters.Add("@P2", SqlDbType.Int).Value = evrak_cins;                               /* HAREKET CİNS */
                        cmd.Parameters.Add("@P3", SqlDbType.Int).Value = evrak_durum;                          /* HAREKET DURUM */
                        cmd.Parameters.Add("@P4", SqlDbType.DateTime).Value = DateTime.Now;                  /* OLUŞTURULMA TARİHİ */
                        cmd.Parameters.Add("@P5", SqlDbType.Int).Value = byte.MinValue;                      /* OLUŞTURAN KULLANICI */
                        cmd.Parameters.Add("@P6", SqlDbType.DateTime).Value = DateTime.Now;                  /* GÜNCELLEŞTİRME  TARİHİ */
                        cmd.Parameters.Add("@P7", SqlDbType.Int).Value = byte.MinValue;                      /* GÜNCELLEŞTİREN  KULLANICI */
                        cmd.Parameters.Add("@P8", SqlDbType.NVarChar, 5).Value = seri;                       /* HAREKET SERİ */
                        cmd.Parameters.Add("@P9", SqlDbType.Int).Value = sira;                               /* HAREKET SIRA */
                        cmd.Parameters.Add("@P10", SqlDbType.Int).Value = byte.MinValue;                     /* SATIR NO */
                        cmd.Parameters.Add("@P11", SqlDbType.NVarChar, 10).Value = belgeNo;                 /* BELGE NO */
                        cmd.Parameters.Add("@P12", SqlDbType.DateTime).Value = tarih;                 /* BELGE  TARİHİ */
                        cmd.Parameters.Add("@P13", SqlDbType.DateTime).Value = tarih;                 /* SEVK  TARİHİ */
                        cmd.Parameters.Add("@P14", SqlDbType.NVarChar, 20).Value = depoKod;             /*GİRİŞ DEPO KODU */
                        cmd.Parameters.Add("@P15", SqlDbType.SmallInt).Value = 0;                 /*char_cari_cins*/
                        cmd.Parameters.Add("@P16", SqlDbType.NVarChar, 25).Value = cariKodu;                  /* CARİ KODU, KASA KODU, BANKA KODU */
                        cmd.Parameters.Add("@P17", SqlDbType.SmallInt).Value = karsiHesapCinsi;                /* char_karsi_hes_cins*/
                        cmd.Parameters.Add("@P18", SqlDbType.NVarChar, 25).Value = kasaHizKod;                  /*KARŞI HESAP  CARİ KODU, KASA KODU, BANKA KODU */
                        cmd.Parameters.Add("@P19", SqlDbType.NVarChar, 25).Value = plasiyerKod;             /*SATICI KODU*/
                        cmd.Parameters.Add("@P20", SqlDbType.NVarChar, 25).Value = kasakodu;             /* KASA KODU */
                        cmd.Parameters.Add("@P21", SqlDbType.NVarChar, 25).Value = bankakodu;             /* BANKA KODU */
                        cmd.Parameters.Add("@P22", SqlDbType.NVarChar, 25).Value = string.Empty;             /*HİZMET KODU */
                        cmd.Parameters.Add("@P23", SqlDbType.Int).Value = vade.Subtract(tarih).TotalDays;                              /* VADE */
                        cmd.Parameters.Add("@P24", SqlDbType.DateTime).Value = vade;                        /* VADE TARİHİ*/
                        cmd.Parameters.Add("@P25", SqlDbType.NVarChar, 25).Value = kesideYeri;             /* KEŞİDE YERİ */
                        cmd.Parameters.Add("@P26", SqlDbType.SmallInt).Value = pozisyon;                /*POZİSYON*/
                        cmd.Parameters.Add("@P27", SqlDbType.NVarChar, 25).Value = kartNo;             /*REFERANS*/
                        cmd.Parameters.Add("@P28", SqlDbType.NVarChar, 250).Value = string.Empty;            /*AÇIKLAMA*/
                        cmd.Parameters.Add("@P29", SqlDbType.Float).Value = byte.MinValue;                   /*STOPAJ*/
                        cmd.Parameters.Add("@P30", SqlDbType.Float).Value = meblag;                       /* ARATOPLAM */
                        cmd.Parameters.Add("@P31", SqlDbType.Float).Value = 0;                            /* İSKONTO */
                        cmd.Parameters.Add("@P32", SqlDbType.Float).Value = 0;                   /* MASRAF */
                        cmd.Parameters.Add("@P33", SqlDbType.Float).Value = 0;                          /* VERGİ */
                        cmd.Parameters.Add("@P34", SqlDbType.Float).Value = 0;                   /* OTV */
                        cmd.Parameters.Add("@P35", SqlDbType.Float).Value = 0;                   /* TEVKİFAT */
                        cmd.Parameters.Add("@P36", SqlDbType.Float).Value = meblag;                          /* MEBLAĞ */
                        cmd.Parameters.Add("@P37", SqlDbType.NVarChar, 5).Value = GetCurSymbol();              /*DOVİZ KISA AD*/
                        cmd.Parameters.Add("@P38", SqlDbType.Int).Value = 0;                     /*RECORD ID*/
                        cmd.Parameters.Add("@P39", SqlDbType.NVarChar, 5).Value = string.Empty;                      /*ref_seri */
                        cmd.Parameters.Add("@P40", SqlDbType.Int).Value = 0;                              /*ref_sira*/
                        cmd.Parameters.Add("@P41", SqlDbType.NVarChar, 25).Value = cekNo;             /*char_cek_no*/
                        cmd.Parameters.Add("@P42", SqlDbType.Int).Value = 0;                     /*char_cek_id */
                        cmd.Parameters.Add("@P43", SqlDbType.Float).Value = 1;                   /*doviz kur*/
                        cmd.Parameters.Add("@P44", SqlDbType.Float).Value = meblag;                   /*doviz tutar*/
                        cmd.Parameters.Add("@oiv_tutar", SqlDbType.Float).Value = 0;

                        cmd.ExecuteNonQuery();
                    }
                    cn.Close();
                }
            }
            catch (Exception ex)
            {
                sonuc = ex.Message;
            }
            return sonuc;
        }

        public string TahsilatReferansNo(TahsilatTipi tip)
        {
            return "";
        }

        public Dictionary<int, int> KdvSira
        {
            get
            {
                Dictionary<int, int> kdvler = new Dictionary<int, int>();
                using (SqlConnection cn = new SqlConnection(Config.GetConfig.GetValue(CParams.ConStr)))
                {
                    cn.Open();
                    using (SqlCommand cmd = new SqlCommand("", cn))
                    {
                        cmd.CommandText = "exec sp_executesql N'select cast(dbo.PW_Kdv_Oran(1) as varchar) + '';'' + cast(dbo.PW_Kdv_Oran(2) as varchar) + '';'' + cast(dbo.PW_Kdv_Oran(3) as varchar) + '';'' + cast(dbo.PW_Kdv_Oran(4) as varchar) + '';'' + cast(dbo.PW_Kdv_Oran(5) as varchar) + '';'' + cast(dbo.PW_Kdv_Oran(6) as varchar) + '';'' + cast(dbo.PW_Kdv_Oran(7) as varchar) + '';'' + cast(dbo.PW_Kdv_Oran(8) as varchar) + '';'' + cast(dbo.PW_Kdv_Oran(9) as varchar)'";
                        object sonuc = cmd.ExecuteScalar();
                        if (sonuc != null)
                        {
                            string[] kdv = sonuc.ToString().Split(';');
                            for (int i = 0; i < kdv.Length; i++)
                                if (!kdvler.ContainsKey(int.Parse(kdv[i])))
                                    kdvler.Add(int.Parse(kdv[i]), int.Parse(kdv[i]));
                        }
                    }
                    cn.Close();
                }
                return kdvler;
            }
        }

        public int MaxEvrakNo(SyncEvrakTipi tip, string seri)
        {
            //Koşulda İade alanı yerine kullanılcak alanı sor
            int sira = 1;
            string txtsql = string.Empty;
            switch (tip)
            {
                case SyncEvrakTipi.SatisFaturasi:
                    txtsql = string.Format("SELECT MAX(char_sira) + 1 FROM  PW_001_001_CHAREKET WHERE (char_seri = N'{0}')", seri);
                    break;
                case SyncEvrakTipi.AlinanSiparis:
                    txtsql = string.Format("SELECT MAX(sip_sira) + 1 FROM  PW_001_001_SIPARIS WHERE  (shar_seri = N'{0}')", seri);
                    break;
            }
            DataTable dt = DataLayer.GetLayer.FillData(txtsql);
            if (dt.Rows.Count > 0)
                sira = Convert.ToInt32(dt.Rows[0][0]);
            return sira;
        }

        public bool EvrakVarmi(string seri, int sira, SyncEvrakTipi tip)
        {
            bool durum = false;
            string txtSql = string.Empty;
            switch (tip)
            {
                case SyncEvrakTipi.SatisFaturasi:
                    txtSql = string.Format("exec sp_executesql N'SELECT char_sira FROM PW_001_001_CHAREKET WHERE (char_seri = N''{0}'') AND (char_sira = {1})'", seri, sira);
                    break;
                case SyncEvrakTipi.AlinanSiparis:
                    txtSql = string.Format("exec sp_executesql N'SELECT sip_sira FROM PW_001_001_SIPARIS WHERE (sip_seri = N''{0}'') AND (sip_sira = {1})'", seri, sira);
                    break;
                case SyncEvrakTipi.Tahsilat:
                    txtSql = string.Format("exec sp_executesql N'SELECT char_sira FROM PW_001_001_CHAREKET WHERE (char_seri = N''{0}'') AND (char_sira = {1})'", seri, sira);
                    break;
                case SyncEvrakTipi.IadeFaturasi:
                    txtSql = string.Format("exec sp_executesql N'SELECT char_sira FROM PW_001_001_CHAREKET WHERE (char_seri  = ''{0}'') AND (char_sira={1})'", seri, sira);
                    break;
                case SyncEvrakTipi.Transfer:
                    txtSql = string.Format("exec sp_executesql N'SELECT shar_sira FROM PW_001_001_SHAREKET WHERE (shar_seri = N''{0}'') AND (shar_sira = {1})'", seri, sira);
                    break;
                default:
                    break;
            }
            DataTable dt = DataLayer.GetLayer.FillData(txtSql);
            if (dt.Rows.Count > 0)
                durum = true;
            return durum;
        }
        public int[] SatisFaturasi_CariHar_EvrakTipi
        {
            get
            {
                return new int[] { 1, 8, 0, 0 };
            }
        }
        public int[] SatisFaturasi_StokHar_EvrakTipi
        {
            get
            {
                return new int[] { 1, 8, 0, 0 };
            }
        }
        public int[] SatisIrsaliyesi_StokHar_EvrakTipi
        {
            get
            {
                return new int[] { 1, 23, 0, 0 };
            }
        }
        public int[] IadeFaturasi_CariHar_EvrakTipi
        {
            get { return new int[] { 0, 8, 0, 0 }; }
        }
        public int[] IadeFaturasi_StokHar_EvrakTipi
        {
            get { return new int[] { 0, 8, 0, 0 }; }
        }
        public int[] AlinanSiparisEvrakTipi
        {
            get { return new int[] { 1, 0, 0, 0 }; }
        }
        public int[] SatisIadeFaturasi_CariHar_EvrakTipi
        {
            get { return new int[] { 0, 8, 0, 0 }; }
        }
        public int[] SatisIadeFaturasi_StokHar_EvrakTipi
        {
            get { return new int[] { 0, 8, 0, 0 }; }
        }
        public int[] DepoSevkEvrakTipi
        {
            get { return new int[] { 0, 4, 0, 0 }; }
        }
        public int[] TahsilatEvrakTipi
        {
            get { return new int[] { 0, 27, 0, 0 }; }
        }
        public string CariListeSql()
        {
            return "SELECT     PW_001_CARI.cari_kod AS [Müşteri Kodu], PW_001_CARI.cari_adi AS [1.Ünvanı], '' AS [2.Ünvanı], PW_001_CADRES.adr_kod AS [Adres No], PW_001_CADRES.adr_adres AS Adresi, '' AS Sokak, PW_001_CADRES.adr_il AS İl, PW_001_CADRES.adr_ilce AS İlçe, PW_001_CARI.cari_id as cari_RECno,PW_001_CADRES.adr_kod AS adres FROM         PW_001_CARI INNER JOIN  PW_001_CADRES ON PW_001_CARI.cari_id = PW_001_CADRES.adr_cari_id";
        }
        public string RouteListeSql()
        {
            return "SELECT     MERCHANT_ROUTE.VISIT_NO, MERCHANT_ROUTE.CUSTOMER_ID, MERCHANT_ROUTE.ADDRESS_ID, PW_001_CARI.cari_kod,  PW_001_CARI.cari_adi AS cari_unvan1  FROM         MERCHANT_ROUTE INNER JOIN  PW_001_CARI ON MERCHANT_ROUTE.CUSTOMER_ID = PW_001_CARI.cari_id WHERE     (MERCHANT_ROUTE.WEEK_NO = @week) AND (MERCHANT_ROUTE.DAY_NO = @day) AND (MERCHANT_ROUTE.MERCHANT_ID = @pls) ORDER BY MERCHANT_ROUTE.VISIT_NO ";
        }
        public string RouteOlmayanCariler(int hafta)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("exec sp_executesql N'SELECT     PW_001_CARI.cari_id, mer.ID, PW_001_CADRES.adr_kod,(SELECT     ISNULL(MAX(VISIT_NO), 0) + 1 FROM MERCHANT_ROUTE WHERE (MERCHANT_ID = mer.ID) AND (WEEK_NO = {0})) AS sira ");
            sb.Append(" FROM         PW_001_CARI INNER JOIN PW_001_CADRES ON PW_001_CARI.cari_id = PW_001_CADRES.adr_cari_id CROSS JOIN MERCHANT AS mer ");
            sb.Append(" WHERE     (PW_001_CARI.cari_id NOT IN (SELECT     CUSTOMER_ID FROM MERCHANT_ROUTE AS MERCHANT_ROUTE_1 WHERE (WEEK_NO = {0}) AND (MERCHANT_ROUTE_1.MERCHANT_ID = mer.ID) GROUP BY CUSTOMER_ID))' ");
            return string.Format(sb.ToString(), hafta);
        }
        public string EvrakListesi(bool tumu)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append(" exec sp_executesql N' ");
            if (tumu)
                sb.Append(" select top 100 percent ");
            else
                sb.Append(" select top 100 ");

            sb.Append(" case when INVOICE_HEADER.DOCUMENT_TYPE =21 then ''Satış Faturası'' when INVOICE_HEADER.DOCUMENT_TYPE =10 then ''Alınan Sipariş'' when INVOICE_HEADER.DOCUMENT_TYPE =30 then ''Tahsilat'' else '''' end AS [Evrak Cinsi], ");
            sb.Append(" INVOICE_HEADER.DOCUMENT_DATE AS [Belge Tarihi],INVOICE_HEADER.INVOICE_SERIES AS [Belge Seri],INVOICE_HEADER.INVOICE_NUMBER AS [Belge Sıra], PW_001_CARI.cari_kod AS [Cari Kodu],PW_001_CARI.cari_adi AS [Cari 1.Ünvanı], '''' AS [Cari 2.Ünvanı], DEVICE_DEFINITIONS.ID AS [Terminal No], DEVICE_DEFINITIONS.DESCRIPTION AS [Terminal Bilgisi], INVOICE_HEADER.GENERAL_TOTAL AS Tutar, INVOICE_HEADER.SAVED_FLAG AS Kaydedildi,INVOICE_HEADER.ID,INVOICE_HEADER.DESCRIPTION AS [Bilgi] ");
            sb.Append(" FROM  INVOICE_HEADER INNER JOIN DEVICE_DEFINITIONS ON INVOICE_HEADER.TERMINAL_ID = DEVICE_DEFINITIONS.ID INNER JOIN PW_001_CARI ON INVOICE_HEADER.CUSTOMER_CODE = PW_001_CARI.cari_kod ");
            sb.Append(" ORDER BY [Belge Tarihi] DESC '");
            return sb.ToString();
        }
        public string UrunPromosyonListesi()
        {
            StringBuilder sb = new StringBuilder();
            sb.Append(" SELECT     t2.NAME AS [Promosyon Tanımı], t3.cari_adi AS [Cari Ünvanı], PW_001_STOK_1.stok_adi AS [Stok Adı], t3.cari_kod, PW_001_STOK_1.stok_code as sto_kod, \r\n");
            sb.Append(" (SELECT stok_code FROM PW_001_STOK WHERE (stok_id = t1.PRM_PRODUCT_ID)) AS PrmStok, t1.PROMOTION_ID, t1.PRODUCT_ID, t1.PRM_PRODUCT_ID, t1.CUSTOMER_ID \r\n");
            sb.Append(" FROM         PRODUCT_PROMOTION AS t1 INNER JOIN PW_001_STOK AS PW_001_STOK_1 ON t1.PRODUCT_ID = PW_001_STOK_1.stok_id INNER JOIN PROMOTION_HEADER AS t2 ON t1.PROMOTION_ID = t2.CODE LEFT OUTER JOIN PW_001_CARI AS t3 ON t1.CUSTOMER_ID = t3.cari_id  \r\n");
            return sb.ToString();
        }
        public DataTable ListeLoadData(ListeTipleri tip, string filtre)
        {
            string sqlstring = string.Empty;
            switch (tip)
            {
                case ListeTipleri.CariKodu:
                    sqlstring = "SELECT     cari_id as ID ,cari_kod AS [Cari Kodu], cari_adi AS [Cari Ünvanı 1], '' AS [Cari Ünvanı 2]  FROM         PW_001_CARI  WHERE     (cari_kod LIKE @kod)";
                    break;
                case ListeTipleri.CariAdi:
                    sqlstring = "SELECT     cari_id as ID ,cari_kod AS [Cari Kodu], cari_adi AS [Cari Ünvanı 1], '' AS [Cari Ünvanı 2]  FROM         PW_001_CARI  WHERE     (cari_adi LIKE @kod)";
                    break;
                case ListeTipleri.StokKodu:
                    sqlstring = "SELECT     stok_id as ID ,stok_code AS [Stok Kodu], stok_adi AS [Stok Adı]  FROM         PW_001_STOK  WHERE     (stok_code like @kod)";
                    break;
                case ListeTipleri.StokAdi:
                    sqlstring = "SELECT     stok_id as ID ,stok_code AS [Stok Kodu], stok_adi AS [Stok Adı]  FROM         PW_001_STOK  WHERE     (stok_adi like @kod)";
                    break;
                case ListeTipleri.Barkod:
                    sqlstring = "";
                    break;
                case ListeTipleri.Terminal:
                    sqlstring = "SELECT     ID AS [Terminal No], DESCRIPTION AS [Terminal Tanımı],DEVICE_CODE, LICENCE_CODE FROM         DEVICE_DEFINITIONS";
                    break;
                default:
                    sqlstring = "";
                    break;
            }
            SqlParameter prm = new SqlParameter("@kod", SqlDbType.VarChar);
            prm.Value = '%' + filtre + '%';
            return DataLayer.GetLayer.FillData(sqlstring, prm);
        }
        public string CariPromosyonListesi()
        {
            StringBuilder sb = new StringBuilder();
            sb.Append(" SELECT     PW_001_CARI.cari_kod AS [Cari Kodu], PW_001_CARI.cari_adi AS [Cari Ünvanı], PROMOTION_HEADER.CODE AS [Promosyon Kodu], PROMOTION_HEADER.NAME AS [Promosyon Tanımı],PW_001_CARI.cari_id as cari_RECno,CUSTOMER_PROMOTION.PROMOTION_ID ");
            sb.Append(" FROM         CUSTOMER_PROMOTION INNER JOIN PROMOTION_HEADER ON CUSTOMER_PROMOTION.PROMOTION_ID = PROMOTION_HEADER.CODE INNER JOIN PW_001_CARI ON CUSTOMER_PROMOTION.CUSTOMER_ID = PW_001_CARI.cari_id ");
            return sb.ToString();
        }

        public string TemsilciBazindaRoute()
        {
            throw new NotImplementedException();
        }

        string depoSevkIns(int tip, int cins, int normal_iade, int evrak_tip, DateTime evrak_tarih, string seri, int sira, int satir, string stok_kod, string cari_kod, decimal miktar, string giris_depo, string cikis_depo, int odeme, string plasiyer, string srmerkez, string kullanici, decimal yekun, decimal isk1tutar, decimal isk2tutar, decimal isk3tutar, decimal isk4tutar, decimal isk5tutar, int kdv, string ref_rec, string ref_dbc, decimal fiyat, string belge_no, string firma_no, string sube_no)
        {
            string sonuc = string.Empty;
            if (string.IsNullOrEmpty(kullanici))
                kullanici = "0";
            try
            {
                decimal burutTutar = yekun + isk1tutar + isk2tutar + isk3tutar + isk4tutar + isk5tutar;
                decimal isk1, isk2, isk3, isk4, isk5;
                isk1 = isk1tutar * 100 / burutTutar;
                isk2 = isk2tutar * 100 / (burutTutar - isk1tutar);
                isk3 = isk3tutar * 100 / (burutTutar - isk1tutar - isk2tutar);
                isk4 = isk4tutar * 100 / (burutTutar - isk1tutar - isk2tutar - isk3tutar);
                isk5 = isk5tutar * 100 / (burutTutar - isk1tutar - isk2tutar - isk3tutar - isk4tutar);

                using (SqlConnection cn = new SqlConnection(Config.GetConfig.GetValue(CParams.ConStr)))
                {
                    cn.Open();
                    using (SqlCommand cmd = new SqlCommand("PW_001_001_DEPOSEVK_INS", cn) { CommandType = CommandType.StoredProcedure })
                    {
                        cmd.Parameters.Add("@P1", SqlDbType.Int).Value = tip;                                // HAREKET TİPİ */
                        cmd.Parameters.Add("@P2", SqlDbType.Int).Value = cins;                               // HAREKET CİNS */
                        cmd.Parameters.Add("@P3", SqlDbType.Int).Value = evrak_tip;                          // HAREKET DURUM */  
                        cmd.Parameters.Add("@P4", SqlDbType.DateTime).Value = DateTime.Now;                  /* OLUŞTURULMA TARİHİ */
                        cmd.Parameters.Add("@P5", SqlDbType.Int).Value = int.Parse(kullanici);               /* OLUŞTURAN KULLANICI */
                        cmd.Parameters.Add("@P6", SqlDbType.DateTime).Value = DateTime.Now;                  /* GÜNCELLEŞTİRME  TARİHİ */
                        cmd.Parameters.Add("@P7", SqlDbType.Int).Value = int.Parse(kullanici);               /* GÜNCELLEŞTİREN  KULLANICI */
                        cmd.Parameters.Add("@P8", SqlDbType.NVarChar, 5).Value = seri;                       /* HAREKET SERİ */
                        cmd.Parameters.Add("@P9", SqlDbType.Int).Value = sira;                               /* HAREKET SIRA */
                        cmd.Parameters.Add("@P10", SqlDbType.Int).Value = satir;                             /* SATIR NO */
                        cmd.Parameters.Add("@P11", SqlDbType.NVarChar, 10).Value = belge_no;                 /* BELGE NO */
                        cmd.Parameters.Add("@P12", SqlDbType.DateTime).Value = evrak_tarih;                 /* BELGE  TARİHİ */
                        cmd.Parameters.Add("@P13", SqlDbType.DateTime).Value = evrak_tarih;                 /* SEVK  TARİHİ */
                        cmd.Parameters.Add("@P14", SqlDbType.NVarChar, 20).Value = giris_depo;               /* DEPO KODU */
                        cmd.Parameters.Add("@P15", SqlDbType.NVarChar, 25).Value = cari_kod;                 /* CARİ KODU */
                        cmd.Parameters.Add("@P16", SqlDbType.NVarChar, 25).Value = plasiyer;                 /* SATICI KODU */
                        cmd.Parameters.Add("@P17", SqlDbType.NVarChar, 25).Value = stok_kod;                 /* STOK KODU */
                        cmd.Parameters.Add("@P18", SqlDbType.NVarChar, 25).Value = StokBarkod(stok_kod);            /* BARKOD */
                        cmd.Parameters.Add("@P19", SqlDbType.NVarChar, 25).Value = "";                     /* SERİ NO */
                        cmd.Parameters.Add("@P20", SqlDbType.NVarChar, 25).Value = "1";             /* BIRIM KODU */
                        cmd.Parameters.Add("@P21", SqlDbType.Float).Value = miktar;                          /* MIKTAR */
                        cmd.Parameters.Add("@P22", SqlDbType.Float).Value = fiyat;                           /* FİYAT */
                        cmd.Parameters.Add("@P23", SqlDbType.Int).Value = 0;                                 /* OTV */
                        cmd.Parameters.Add("@P24", SqlDbType.Float).Value = isk1;                       /* İSK-1 */
                        cmd.Parameters.Add("@P25", SqlDbType.Float).Value = isk2;                       /* İSK-2 */
                        cmd.Parameters.Add("@P26", SqlDbType.Float).Value = isk3;                       /* İSK-3 */
                        cmd.Parameters.Add("@P27", SqlDbType.Float).Value = isk4;                       /* İSK-4 */
                        cmd.Parameters.Add("@P28", SqlDbType.Float).Value = isk5;                       /* İSK-5 */
                        cmd.Parameters.Add("@P29", SqlDbType.Float).Value = 0;                   /* İSK-6 */
                        cmd.Parameters.Add("@P30", SqlDbType.Float).Value = 0;                   /* İSK-7 */
                        cmd.Parameters.Add("@P31", SqlDbType.Float).Value = 0;                   /* İSK-8 */
                        cmd.Parameters.Add("@P32", SqlDbType.Float).Value = 0;                   /* İSK-9 */
                        cmd.Parameters.Add("@P33", SqlDbType.Float).Value = 0;                   /* İSK-10 */
                        cmd.Parameters.Add("@P34", SqlDbType.Float).Value = yekun;                   /* MEBLAĞ */
                        cmd.Parameters.Add("@P35", SqlDbType.Int).Value = kdv;                               /* VERGİ */
                        cmd.Parameters.Add("@P36", SqlDbType.NVarChar, 5).Value = GetCurSymbol();              /* DÖVİZ ID */
                        cmd.Parameters.Add("@P37", SqlDbType.Float).Value = 1;                   /* DÖVİZ KURU */
                        cmd.Parameters.Add("@P38", SqlDbType.Float).Value = yekun;                   /* DÖVİZ TOPLAM */
                        cmd.Parameters.Add("@P39", SqlDbType.Int).Value = 0;                     /* VADE */
                        cmd.Parameters.Add("@P40", SqlDbType.NVarChar, 5).Value = string.Empty;                      /* SİPARİŞ SERİ */
                        cmd.Parameters.Add("@P41", SqlDbType.Int).Value = 0;                              /* SİPARİŞ SİRA */
                        cmd.Parameters.Add("@P42", SqlDbType.NVarChar, 5).Value = string.Empty;                      /* İRSALİYE SERİ */
                        cmd.Parameters.Add("@P43", SqlDbType.Int).Value = 0;                              /* İRSALİYE SIRA */
                        cmd.Parameters.Add("@P44", SqlDbType.Int).Value = 0;                         /* İŞLEM TİPİ */
                        cmd.Parameters.Add("@P45", SqlDbType.Int).Value = 0;                      /* HAREKET ID */
                        cmd.Parameters.Add("@P46", SqlDbType.NVarChar).Value = cikis_depo;                 /* PRIVATE */
                        cmd.Parameters.Add("@P47", SqlDbType.NVarChar).Value = "";                 /* PRIVATE */
                        cmd.Parameters.Add("@plot_parti_kod", SqlDbType.NVarChar, 25).Value = string.Empty;
                        cmd.Parameters.Add("@plot_lot_kod", SqlDbType.NVarChar, 25).Value = string.Empty;
                        cmd.Parameters.Add("plot_stok_id ", SqlDbType.Int).Value = byte.MinValue;
                        cmd.Parameters.Add("@plot_aciklama", SqlDbType.NVarChar, 100).Value = string.Empty;
                        cmd.Parameters.Add("@plot_son_kull_tarihi", SqlDbType.DateTime).Value = DateTime.Now;
                        cmd.Parameters.Add("@plot_dara", SqlDbType.Float).Value = 0;
                        cmd.Parameters.Add("@plot_safi", SqlDbType.Float).Value = 0;
                        cmd.Parameters.Add("@plot_en", SqlDbType.Float).Value = 0;
                        cmd.Parameters.Add("@plot_boy", SqlDbType.Float).Value = 0;
                        cmd.Parameters.Add("@plot_yukseklik", SqlDbType.Float).Value = 0;
                        cmd.Parameters.Add("@plot_ozel1", SqlDbType.NVarChar, 25).Value = string.Empty;
                        cmd.Parameters.Add("@plot_ozel2", SqlDbType.NVarChar, 25).Value = string.Empty;
                        cmd.Parameters.Add("@plot_ozel3", SqlDbType.NVarChar, 25).Value = string.Empty;
                        cmd.Parameters.Add("@plot_ozel4", SqlDbType.NVarChar, 25).Value = string.Empty;
                        cmd.Parameters.Add("@plot_ozel5", SqlDbType.NVarChar, 25).Value = string.Empty;
                        cmd.Parameters.Add("@plot_ozel6", SqlDbType.NVarChar, 25).Value = string.Empty;
                        cmd.Parameters.Add("@plot_ozel7", SqlDbType.NVarChar, 25).Value = string.Empty;
                        cmd.Parameters.Add("@plot_ozel8", SqlDbType.NVarChar, 25).Value = string.Empty;
                        cmd.Parameters.Add("@plot_ozel9", SqlDbType.NVarChar, 25).Value = string.Empty;
                        cmd.Parameters.Add("@plot_ozel10", SqlDbType.NVarChar, 25).Value = string.Empty;
                        cmd.Parameters.Add("@maliyet_guncelle", SqlDbType.Bit).Value = false;

                        cmd.ExecuteNonQuery();
                    }
                    cn.Close();
                }
            }
            catch (Exception ex)
            {
                sonuc = ex.Message;
            }
            return sonuc;
        }

        public string DepoSevkEkle(int tip, int cins, int normal_iade, int evrak_tip, DateTime evrak_tarih, string seri, int sira, int satir, string stok_kod, string cari_kod, decimal miktar, string giris_depo, string cikis_depo, int odeme, string plasiyer, string srmerkez, string kullanici, decimal yekun, decimal isk1tutar, decimal isk2tutar, decimal isk3tutar, decimal isk4tutar, decimal isk5tutar, int kdv, string ref_rec, string ref_dbc, decimal fiyat, string belge_no, string firma_no, string sube_no, bool sonlandir)
        {
            this.depoSevkIns(0, 4, normal_iade, evrak_tip, evrak_tarih, seri, sira, satir + 1, stok_kod, cari_kod, miktar, giris_depo, cikis_depo, odeme, plasiyer, srmerkez, kullanici, yekun, isk1tutar, isk2tutar, isk3tutar, isk4tutar, isk5tutar, kdv, ref_rec, ref_dbc, fiyat, belge_no, firma_no, sube_no);
            this.depoSevkIns(1, 5, normal_iade, evrak_tip, evrak_tarih, seri, sira, satir, stok_kod, cari_kod, miktar, cikis_depo, giris_depo, odeme, plasiyer, srmerkez, kullanici, yekun, isk1tutar, isk2tutar, isk3tutar, isk4tutar, isk5tutar, kdv, ref_rec, ref_dbc, fiyat, belge_no, firma_no, sube_no);

            Session.Get["aratoplam"] = Convert.ToDecimal(Session.Get["aratoplam"]) + yekun;
            if (sonlandir)
            {
                this.CariHarKaydet(0, 4, true, evrak_tip, seri, sira, evrak_tarih, belge_no, cari_kod, 0, Convert.ToDecimal(Session.Get["aratoplam"]), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, firma_no, sube_no, 0, "", giris_depo, plasiyer, "", "", false, null);
            }
            return "";
        }


        #region ISynchronizer Members


        public int CariVade(string carikod)
        {
            return 0;
        }

        #endregion
    }
}
